/***********************************************************************
 * Module:  Saradnik.java
 * Author:  Igor Spremo, Milan Stojkov
 * Purpose: Defines the Class Saradnik
 ***********************************************************************/

package model.entity;

import java.io.Serializable;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.Table;

/**
 * 
 * @author Igor Spremo, Milan Stojkov
 *
 */
@Entity
@Table(name = "saradnik")
@NamedQueries({
//	@NamedQuery(name="findAlbumByTitleAndUserId", 
//				query="SELECT a FROM Album a WHERE a.title " +
//					"LIKE :title AND a.userThatCreatedAlbum.id LIKE :userId"),
//	
})
@SuppressWarnings("serial")
public class Saradnik implements Serializable {
	
	protected Integer id;
	protected String naziv;
	protected int pib;
	protected String apr;
	protected String napomena;
	protected int maticniBroj;
	protected String webSiteAdresa;
	protected String email;
	protected int verzija;

	protected Collection<Telefon> telefoni;
	protected Collection<ZiroRacun> ziroRacuni;
	protected Collection<Radnik> radnici;
	protected Collection<Poslovnica> poslovnice;
	protected Collection<VrstaPloce> vrstePloca;
	protected Collection<NarucenaUsluga> naruceneUsluge;

	public Collection<Telefon> getTelefoni() {
		if (telefoni == null)
			telefoni = new HashSet<Telefon>();
		
		return telefoni;
	}

	public Iterator<Telefon> getIteratorTelefoni() {
		if (telefoni == null)
			telefoni = new HashSet<Telefon>();
		
		return telefoni.iterator();
	}

	public void setTelefoni(Collection<Telefon> newTelefoni) {
		removeAllTelefoni();
		for (Iterator<Telefon> iter = newTelefoni.iterator(); iter.hasNext();)
			addTelefon((Telefon) iter.next());
	}

	public void addTelefon(Telefon newTelefon) {
		if (newTelefon == null)
			return;
		if (this.telefoni == null)
			this.telefoni = new HashSet<Telefon>();
		if (!this.telefoni.contains(newTelefon))
			this.telefoni.add(newTelefon);
	}

	public void removeTelefon(Telefon oldTelefon) {
		if (oldTelefon == null)
			return;
		if (this.telefoni != null)
			if (this.telefoni.contains(oldTelefon))
				this.telefoni.remove(oldTelefon);
	}

	public void removeAllTelefoni() {
		if (telefoni != null)
			telefoni.clear();
	}

	public Collection<ZiroRacun> getZiroRacuni() {
		if (ziroRacuni == null)
			ziroRacuni = new HashSet<ZiroRacun>();
		
		return ziroRacuni;
	}

	public Iterator<ZiroRacun> getIteratorZiroRacuni() {
		if (ziroRacuni == null)
			ziroRacuni = new HashSet<ZiroRacun>();
		
		return ziroRacuni.iterator();
	}

	public void setZiroRacuni(Collection<ZiroRacun> newZiroRacuni) {
		removeAllZiroRacuni();
		for (Iterator<ZiroRacun> iter = newZiroRacuni.iterator(); iter.hasNext();)
			addZiroRacun((ZiroRacun) iter.next());
	}

	public void addZiroRacun(ZiroRacun newZiroRacun) {
		if (newZiroRacun == null)
			return;
		if (this.ziroRacuni == null)
			this.ziroRacuni = new HashSet<ZiroRacun>();
		if (!this.ziroRacuni.contains(newZiroRacun))
			this.ziroRacuni.add(newZiroRacun);
	}

	public void removeZiroRacun(ZiroRacun oldZiroRacun) {
		if (oldZiroRacun == null)
			return;
		if (this.ziroRacuni != null)
			if (this.ziroRacuni.contains(oldZiroRacun))
				this.ziroRacuni.remove(oldZiroRacun);
	}

	public void removeAllZiroRacuni() {
		if (ziroRacuni != null)
			ziroRacuni.clear();
	}

	public Collection<Radnik> getRadnici() {
		if (radnici == null)
			radnici = new HashSet<Radnik>();
		
		return radnici;
	}

	public Iterator<Radnik> getIteratorRadnici() {
		if (radnici == null)
			radnici = new HashSet<Radnik>();
		
		return radnici.iterator();
	}

	public void setRadnici(Collection<Radnik> newRadnici) {
		removeAllRadnici();
		for (Iterator<Radnik> iter = newRadnici.iterator(); iter.hasNext();)
			addRadnik((Radnik) iter.next());
	}

	public void addRadnik(Radnik newRadnik) {
		if (newRadnik == null)
			return;
		if (this.radnici == null)
			this.radnici = new HashSet<Radnik>();
		if (!this.radnici.contains(newRadnik))
			this.radnici.add(newRadnik);
	}

	public void removeRadnik(Radnik oldRadnik) {
		if (oldRadnik == null)
			return;
		if (this.radnici != null)
			if (this.radnici.contains(oldRadnik))
				this.radnici.remove(oldRadnik);
	}

	public void removeAllRadnici() {
		if (radnici != null)
			radnici.clear();
	}

	public Collection<Poslovnica> getPoslovnice() {
		if (poslovnice == null)
			poslovnice = new HashSet<Poslovnica>();
		
		return poslovnice;
	}

	public Iterator<Poslovnica> getIteratorPoslovnice() {
		if (poslovnice == null)
			poslovnice = new HashSet<Poslovnica>();
		
		return poslovnice.iterator();
	}

	public void setPoslovnice(Collection<Poslovnica> newPoslovnice) {
		removeAllPoslovnice();
		for (Iterator<Poslovnica> iter = newPoslovnice.iterator(); iter.hasNext();)
			addPoslovnica((Poslovnica) iter.next());
	}

	public void addPoslovnica(Poslovnica newPoslovnica) {
		if (newPoslovnica == null)
			return;
		if (this.poslovnice == null)
			this.poslovnice = new HashSet<Poslovnica>();
		if (!this.poslovnice.contains(newPoslovnica))
			this.poslovnice.add(newPoslovnica);
	}

	public void removePoslovnica(Poslovnica oldPoslovnica) {
		if (oldPoslovnica == null)
			return;
		if (this.poslovnice != null)
			if (this.poslovnice.contains(oldPoslovnica))
				this.poslovnice.remove(oldPoslovnica);
	}

	public void removeAllPoslovnice() {
		if (poslovnice != null)
			poslovnice.clear();
	}

	public Collection<VrstaPloce> getVrstePloca() {
		if (vrstePloca == null)
			vrstePloca = new HashSet<VrstaPloce>();
		
		return vrstePloca;
	}

	public Iterator<VrstaPloce> getIteratorVrstePloca() {
		if (vrstePloca == null)
			vrstePloca = new HashSet<VrstaPloce>();
		
		return vrstePloca.iterator();
	}

	public void setVrstePloca(Collection<VrstaPloce> newVrstePloca) {
		removeAllVrstePloca();
		for (Iterator<VrstaPloce> iter = newVrstePloca.iterator(); iter.hasNext();)
			addVrstaPloce((VrstaPloce) iter.next());
	}

	public void addVrstaPloce(VrstaPloce newVrstaPloce) {
		if (newVrstaPloce == null)
			return;
		if (this.vrstePloca == null)
			this.vrstePloca = new HashSet<VrstaPloce>();
		if (!this.vrstePloca.contains(newVrstaPloce))
			this.vrstePloca.add(newVrstaPloce);
	}

	public void removeVrstaPloce(VrstaPloce oldVrstaPloce) {
		if (oldVrstaPloce == null)
			return;
		if (this.vrstePloca != null)
			if (this.vrstePloca.contains(oldVrstaPloce))
				this.vrstePloca.remove(oldVrstaPloce);
	}

	public void removeAllVrstePloca() {
		if (vrstePloca != null)
			vrstePloca.clear();
	}

	public Collection<NarucenaUsluga> getNaruceneUsluge() {
		if (naruceneUsluge == null)
			naruceneUsluge = new HashSet<NarucenaUsluga>();
		
		return naruceneUsluge;
	}

	public Iterator<NarucenaUsluga> getIteratorNaruceneUsluge() {
		if (naruceneUsluge == null)
			naruceneUsluge = new HashSet<NarucenaUsluga>();
		
		return naruceneUsluge.iterator();
	}

	public void setNaruceneUsluge(Collection<NarucenaUsluga> newNaruceneUsluge) {
		removeAllNaruceneUsluge();
		for (Iterator<NarucenaUsluga> iter = newNaruceneUsluge.iterator(); iter.hasNext();)
			addNarucenaUsluga((NarucenaUsluga) iter.next());
	}

	public void addNarucenaUsluga(NarucenaUsluga newNarucenaUsluga) {
		if (newNarucenaUsluga == null)
			return;
		if (this.naruceneUsluge == null)
			this.naruceneUsluge = new HashSet<NarucenaUsluga>();
		if (!this.naruceneUsluge.contains(newNarucenaUsluga)) {
			this.naruceneUsluge.add(newNarucenaUsluga);
			newNarucenaUsluga.addSaradnik(this);
		}
	}

	public void removeNarucenaUsluga(NarucenaUsluga oldNarucenaUsluga) {
		if (oldNarucenaUsluga == null)
			return;
		if (this.naruceneUsluge != null)
			if (this.naruceneUsluge.contains(oldNarucenaUsluga)) {
				this.naruceneUsluge.remove(oldNarucenaUsluga);
				oldNarucenaUsluga.removeSaradnik(this);
			}
	}

	public void removeAllNaruceneUsluge() {
		if (naruceneUsluge != null) {
			NarucenaUsluga oldNARUCENA_USLUGA;
			for (Iterator<NarucenaUsluga> iter = getIteratorNaruceneUsluge(); iter.hasNext();) {
				oldNARUCENA_USLUGA = (NarucenaUsluga) iter.next();
				iter.remove();
				oldNARUCENA_USLUGA.removeSaradnik(this);
			}
		}
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNaziv() {
		return naziv;
	}

	public void setNaziv(String naziv) {
		this.naziv = naziv;
	}

	public int getPib() {
		return pib;
	}

	public void setPib(int pib) {
		this.pib = pib;
	}

	public String getApr() {
		return apr;
	}

	public void setApr(String apr) {
		this.apr = apr;
	}

	public String getNapomena() {
		return napomena;
	}

	public void setNapomena(String napomena) {
		this.napomena = napomena;
	}

	public int getMaticniBroj() {
		return maticniBroj;
	}

	public void setMaticniBroj(int maticniBroj) {
		this.maticniBroj = maticniBroj;
	}

	public String getWebSiteAdresa() {
		return webSiteAdresa;
	}

	public void setWebSiteAdresa(String webSiteAdresa) {
		this.webSiteAdresa = webSiteAdresa;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public int getVerzija() {
		return verzija;
	}

	public void setVerzija(int verzija) {
		this.verzija = verzija;
	}

}